<?php

/*
 * Object/PlanningSemaine.php
 */

namespace RHX\Model\Object;

use Zend\Db\Adapter\Adapter;

class PlanningSemaine {

    public $id;
    public $matricule;
    public $lundi;
    public $lundi_code;
    public $lundi_entree;
    public $lundi_sortie;
    public $lundi_pause;
    public $lundi_repas;
    public $lundi_entree_ref;
    public $lundi_sortie_ref;
    public $mardi;
    public $mardi_code;
    public $mardi_entree;
    public $mardi_sortie;
    public $mardi_pause;
    public $mardi_repas;
    public $mardi_entree_ref;
    public $mardi_sortie_ref;
    public $mercredi;
    public $mercredi_code;
    public $mercredi_entree;
    public $mercredi_sortie;
    public $mercredi_pause;
    public $mercredi_repas;
    public $mercredi_entree_ref;
    public $mercredi_sortie_ref;
    public $jeudi;
    public $jeudi_code;
    public $jeudi_entree;
    public $jeudi_sortie;
    public $jeudi_pause;
    public $jeudi_repas;
    public $jeudi_entree_ref;
    public $jeudi_sortie_ref;
    public $vendredi;
    public $vendredi_code;
    public $vendredi_entree;
    public $vendredi_sortie;
    public $vendredi_pause;
    public $vendredi_repas;
    public $vendredi_entree_ref;
    public $vendredi_sortie_ref;
    public $samedi;
    public $samedi_code;
    public $samedi_entree;
    public $samedi_sortie;
    public $samedi_pause;
    public $samedi_repas;
    public $samedi_entree_ref;
    public $samedi_sortie_ref;
    public $dimanche;
    public $dimanche_code;
    public $dimanche_entree;
    public $dimanche_sortie;
    public $dimanche_pause;
    public $dimanche_repas;
    public $dimanche_entree_ref;
    public $dimanche_sortie_ref;
    public $heure_travaille;
    public $retard;
    public $retard_heure;
    public $heure_non_planifie;
    public $coef;
    public $taux;
    public $hebdo;
    public $heure_prevues;
    public $heure_travail;
    protected $adapter;

    public function __construct(Adapter $adapter, $data = array()) {
	$this->exchangeArray($data);
	$this->adapter = $adapter;
    }

    public function exchangeArray($data) {
	$this->id			 = isset($data['id']) ? $data['id'] : null;
	$this->matricule		 = isset($data['matricule']) ? $data['matricule'] : 0;
	$this->lundi			 = isset($data['lundi']) ? $data['lundi'] : '0000-00-00';
	$this->lundi_code		 = isset($data['lundi_code']) ? $data['lundi_code'] : 3;
	$this->lundi_entree		 = isset($data['lundi_entree']) ? $data['lundi_entree'] : '00:00';
	$this->lundi_sortie		 = isset($data['lundi_sortie']) ? $data['lundi_sortie'] : '00:00';
	$this->lundi_pause		 = isset($data['lundi_pause']) ? $data['lundi_pause'] : 0;
	$this->lundi_repas		 = isset($data['lundi_repas']) ? $data['lundi_repas'] : 0;
	$this->lundi_entree_ref		 = isset($data['lundi_entree_ref']) ? $data['lundi_entree_ref'] : '00:00';
	$this->lundi_sortie_ref		 = isset($data['lundi_sortie_ref']) ? $data['lundi_sortie_ref'] : '00:00';
	$this->mardi			 = isset($data['mardi']) ? $data['mardi'] : '0000-00-00';
	$this->mardi_code		 = isset($data['mardi_code']) ? $data['mardi_code'] : 3;
	$this->mardi_entree		 = isset($data['mardi_entree']) ? $data['mardi_entree'] : '00:00';
	$this->mardi_sortie		 = isset($data['mardi_sortie']) ? $data['mardi_sortie'] : '00:00';
	$this->mardi_pause		 = isset($data['mardi_pause']) ? $data['mardi_pause'] : 0;
	$this->mardi_repas		 = isset($data['mardi_repas']) ? $data['mardi_repas'] : 0;
	$this->mardi_entree_ref		 = isset($data['mardi_entree_ref']) ? $data['mardi_entree_ref'] : '00:00';
	$this->mardi_sortie_ref		 = isset($data['mardi_sortie_ref']) ? $data['mardi_sortie_ref'] : '00:00';
	$this->mercredi			 = isset($data['mercredi']) ? $data['mercredi'] : '0000-00-00';
	$this->mercredi_code		 = isset($data['mercredi_code']) ? $data['mercredi_code'] : 3;
	$this->mercredi_entree		 = isset($data['mercredi_entree']) ? $data['mercredi_entree'] : '00:00';
	$this->mercredi_sortie		 = isset($data['mercredi_sortie']) ? $data['mercredi_sortie'] : '00:00';
	$this->mercredi_pause		 = isset($data['mercredi_pause']) ? $data['mercredi_pause'] : 0;
	$this->mercredi_repas		 = isset($data['mercredi_repas']) ? $data['mercredi_repas'] : 0;
	$this->mercredi_entree_ref	 = isset($data['mercredi_entree_ref']) ? $data['mercredi_entree_ref'] : '00:00';
	$this->mercredi_sortie_ref	 = isset($data['mercredi_sortie_ref']) ? $data['mercredi_sortie_ref'] : '00:00';
	$this->jeudi			 = isset($data['jeudi']) ? $data['jeudi'] : '0000-00-00';
	$this->jeudi_code		 = isset($data['jeudi_code']) ? $data['jeudi_code'] : 3;
	$this->jeudi_entree		 = isset($data['jeudi_entree']) ? $data['jeudi_entree'] : '00:00';
	$this->jeudi_sortie		 = isset($data['jeudi_sortie']) ? $data['jeudi_sortie'] : '00:00';
	$this->jeudi_pause		 = isset($data['jeudi_pause']) ? $data['jeudi_pause'] : 0;
	$this->jeudi_repas		 = isset($data['jeudi_repas']) ? $data['jeudi_repas'] : 0;
	$this->jeudi_entree_ref		 = isset($data['jeudi_entree_ref']) ? $data['jeudi_entree_ref'] : '00:00';
	$this->jeudi_sortie_ref		 = isset($data['jeudi_sortie_ref']) ? $data['jeudi_sortie_ref'] : '00:00';
	$this->vendredi			 = isset($data['vendredi']) ? $data['vendredi'] : '0000-00-00';
	$this->vendredi_code		 = isset($data['vendredi_code']) ? $data['vendredi_code'] : 3;
	$this->vendredi_entree		 = isset($data['vendredi_entree']) ? $data['vendredi_entree'] : '00:00';
	$this->vendredi_sortie		 = isset($data['vendredi_sortie']) ? $data['vendredi_sortie'] : '00:00';
	$this->vendredi_pause		 = isset($data['vendredi_pause']) ? $data['vendredi_pause'] : 0;
	$this->vendredi_repas		 = isset($data['vendredi_repas']) ? $data['vendredi_repas'] : 0;
	$this->vendredi_entree_ref	 = isset($data['vendredi_entree_ref']) ? $data['vendredi_entree_ref'] : '00:00';
	$this->vendredi_sortie_ref	 = isset($data['vendredi_sortie_ref']) ? $data['vendredi_sortie_ref'] : '00:00';
	$this->samedi			 = isset($data['samedi']) ? $data['samedi'] : '0000-00-00';
	$this->samedi_code		 = isset($data['samedi_code']) ? $data['samedi_code'] : 3;
	$this->samedi_entree		 = isset($data['samedi_entree']) ? $data['samedi_entree'] : '00:00';
	$this->samedi_sortie		 = isset($data['samedi_sortie']) ? $data['samedi_sortie'] : '00:00';
	$this->samedi_pause		 = isset($data['samedi_pause']) ? $data['samedi_pause'] : 0;
	$this->samedi_repas		 = isset($data['samedi_repas']) ? $data['samedi_repas'] : 0;
	$this->samedi_entree_ref	 = isset($data['samedi_entree_ref']) ? $data['samedi_entree_ref'] : '00:00';
	$this->samedi_sortie_ref	 = isset($data['samedi_sortie_ref']) ? $data['samedi_sortie_ref'] : '00:00';
	$this->dimanche			 = isset($data['dimanche']) ? $data['dimanche'] : '0000-00-00';
	$this->dimanche_code		 = isset($data['dimanche_code']) ? $data['dimanche_code'] : 3;
	$this->dimanche_entree		 = isset($data['dimanche_entree']) ? $data['dimanche_entree'] : '00:00';
	$this->dimanche_sortie		 = isset($data['dimanche_sortie']) ? $data['dimanche_sortie'] : '00:00';
	$this->dimanche_pause		 = isset($data['dimanche_pause']) ? $data['dimanche_pause'] : 0;
	$this->dimanche_repas		 = isset($data['dimanche_repas']) ? $data['dimanche_repas'] : 0;
	$this->dimanche_entree_ref	 = isset($data['dimanche_entree_ref']) ? $data['dimanche_entree_ref'] : '00:00';
	$this->dimanche_sortie_ref	 = isset($data['dimanche_sortie_ref']) ? $data['dimanche_sortie_ref'] : '00:00';
	$this->heure_travaille		 = isset($data['heure_travaille']) ? $data['heure_travaille'] : 0.0;
	$this->retard			 = isset($data['retard']) ? $data['retard'] : 0;
	$this->retard_heure		 = isset($data['retard_heure']) ? $data['retard_heure'] : 0;
	$this->heure_non_planifie	 = isset($data['heure_non_plannifie']) ? $data['heure_non_plannifie'] : 0.0;
	$this->coef			 = isset($data['coef']) ? floatval($data['coef']) : 0.0;
	$this->hebdo			 = isset($data['hebdo']) ? floatval($data['hebdo']) : 0.0;
	$this->taux			 = isset($data['taux']) ? floatval($data['taux']) : 0.0;
	$this->heure_prevues		 = isset($data['heure_prevues']) ? $data['heure_prevues'] : '00:00';
	$this->heure_travail		 = isset($data['heure_travail']) ? $data['heure_travail'] : '00:00';
    }

    public function getArrayCopy() {
	return get_object_vars($this);
    }

    /**
     * Employé
     *
     * @return Employe
     */
    public function getEmploye() {
	// Table employé
	$employeTable = new \RHX\Model\Table\EmployeTable($this->adapter);

	return $employeTable->get($this->matricule);
    }

    /**
     * Récupérer une Semaine
     * 
     * @return Semaine
     */
    public function getSemaine() {
	// Table Semaine
	$semaineTable = new \RHX\Model\Table\SemaineTable($this->adapter);

	return $semaineTable->getSemaineByDate($this->lundi);
    }

    /**
     * Récupérer une Période
     *
     * @return Periode
     */
    public function getPeriode() {
	// Table Période
	$periodeTable = new \RHX\Model\Table\PeriodeTable($this->adapter);

	return $periodeTable->getPeriodeByDate($this->lundi);
    }

    /**
     * Récupérer le Template pour la création du planning semaine
     * 
     * @return EmployeTemplate
     */
    public function getTemplate() {
	// Vue
	$view = new \RHX\Model\View\PSPlanningView($this->adapter);

	return $view->getTemplate($this->id, $this->matricule);
    }

}

?>
